<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>加密解密</title>
	<script>
		/*
			某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：每位数字都加上5,然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，请编写一个函数，传入原文，输出密文
				1）获取个/十/百/千位的数字
				2）每位数字都加上5
				3）用每位数字对10取余得到的数字替代当前数字
				4）交换位置：千位和个位交换，十位和百位交互
				5）输出最终结果
		 */
		
		// 加密
		function encrypt(num){
			// 1）获取个/十/百/千位的数字
			// 个位
			var a = num%10;

			// 十位
			var b = parseInt(num/10)%10;

			// 百位
			var c = parseInt(num/100)%10;

			// 千位
			var d = parseInt(num/1000);

			// 2）每位数字都加上5
			a += 5;
			b += 5;
			c += 5;
			d += 5;

			// 3）用每位数字对10取余得到的数字替代当前数字
			a %= 10;
			b %= 10;
			c %= 10;
			d %= 10;

			// 4）交换位置：千位和个位交换，十位和百位交互
			// dcba => abcd

			var res = '' + a + b + c + d;

			return res;
		}

		var jm = encrypt(1024);
		console.log(jm);


		// 解密
		function decrypt(num){
			// 个位
			var a = num%10;

			// 十位
			var b = parseInt(num/10)%10;

			// 百位
			var c = parseInt(num/100)%10;

			// 千位
			var d = parseInt(num/1000);


			// 2）把加密后的数字变成未加密的数字
			// (a + 5)%10;
			// 0 => 5
			// 1 => 6
			// ....
			// 5 => 0
			// 6 => 1
			// ...
			// 9 => 4

			a = (a>=5 ? a : a + 10) - 5;
			b = (b>=5 ? b : b + 10) - 5;
			c = (c>=5 ? c : c + 10) - 5;
			d = (d>=5 ? d : d + 10) - 5;

			// a = (a + 10 - 5) % 10

			// 3）交换位置
			// dcba => acbd => abcd;

			var res = '' + a + b + c + d;

			return res;
		}
		decrypt(9756);//=>1024
	</script>
</head>
<body>
	
</body>
</html>